1. Field of the Invention
This invention generally relates to an integrated circuit (IC) system-on-chip (SoC) and, more particularly, to a system and method for allocating SoC shared resources between processors using a hardware queue manager and resource allocator.
2. Description of the Related Art
A system may include multiple central processing units (CPUs), also referred to as processors, cores, or microprocessors, running in the same system. A single SoC may have multiple systems or a system may include multiple SoCs, with multiple CPUs on each SoC. Due to contention between CPUs, it is difficult to share the same resource (e.g., a memory or input/output (IO) port). Because of this issue, a conventional system is setup to have IO resource dedicated to each CPU. For example, if the SoC has two cores and two peripheral component interconnect (PCI) ports, each PCI port is dedicated to a corresponding CPU. Thus, even though there are two physical PCI ports available in the system, effectively only one is available for a given CPU. As another example, an SoC can have four CPU cores, 4 PCIe (PCI express) interfaces, 3 universal serial bus (USB) interfaces, and 4 Ethernet interfaces, where each interface is dedicated to a different CPU.
As today's applications require more computing power and IO data centric processing, there is commercial pressure to reduce the die size of the semiconductor device, increase performance, reduce cost, reduce power, and increase throughput. It would be advantageous if the number of CPU dedicated resources could be reduced by having the CPUs share. However, because CPUs run different applications, which are generally not aware of the usage of other CPU's applications, it is difficult to share resources. Further, even though there are multiple IOs in the system, the dedication of resources to specific CPUs introduces an overall restriction in system usage if each application cannot efficiently perform using only one dedicated IO resource.
It would be advantageous if a simple hardware mechanism could be used to establish resource access priority, with software-based locking to support resource grants and tracked resource usage.